Shell

推荐列表 站点导航

当前位置:首页 > 脚本编程 > Shell >

shell 获取用户输入指定范围的单个字符的两种方法

来源:网络  作者:网友投稿  发布时间:2021-01-08 06:33
需求:要求获取用户输一个字符a-zA-Z:...

但是,当输入*等特殊字符时,会报错。

需求:要求获取用户输一个字符a-zA-Z: 方法一: 复制代码 代码如下: echo `echo {a..z}``echo {A..Z}` /tmp/letterfile while read -p please input a letter: letter do ((`awk -v var=$letter 'BEGIN{print length(var)}'` == 1)) grep -q $letter /tmp/tmpfile break done rm -f /tmp/letterfile echo you input letter $letter [root@station1 ~]# cat a.sh 复制代码 代码如下: echo `echo {a..z}``echo {A..Z}` /tmp/letterfile while read -p please input a letter: letter do ((`awk -v var=$letter 'BEGIN{print length(var)}'` == 1)) grep -q $letter /tmp/tmpfile break done rm -f /tmp/letterfile echo you input letter $letter [root@station1 ~]# chmod +x a.sh [root@station1 ~]# ./a.sh please input a letter: 123 please input a letter: abc please input a letter: 4 please input a letter: please input a letter: ( please input a letter: a you input letter a [root@station1 ~]# 最初使用expr length $letter 替代 wk -v var=$letter 'BEGIN{print length(var)}'的。

如下: [root@station1 ~]# cat data 复制代码 代码如下: while read -p please input a letter: letter do ((`expr length $letter` == 1)) expr $letter : [[:alnum:]] /dev/null break done echo you input letter $letter [root@station1 ~]# bash data please input a letter: 123 please input a letter: abc please input a letter: a you input letter a [root@station1 ~]# bash data please input a letter: * expr: 语法错误 data: line 3: ((: == 1: syntax error: operand expected (error token is == 1) please input a letter: 来看方法二: 复制代码 代码如下: while read -p please input a letter: letter do [[ `echo $letter | awk '/^[[:alpha:]]$/{print 1}'` -eq 1 ]] break done echo you input letter $letter 如下: [root@station1 ~]# cat b.sh 复制代码 代码如下: while read -p please input a letter: letter do [[ `echo $letter | awk '/^[[:alpha:]]$/{print 1}'` -eq 1 ]] break done echo you input letter $letter [root@station1 ~]# chmod +x b.sh [root@station1 ~]# ./b.sh please input a letter: * please input a letter: abc please input a letter: 234 please input a letter: ) please input a letter: T you input letter T [root@station1 ~]# ,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/shell/11894.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

shell 获取用户输入指定范围的单个字符的两种方法

2021-01-08 编辑:网友投稿

但是,当输入*等特殊字符时,会报错。

需求:要求获取用户输一个字符a-zA-Z: 方法一: 复制代码 代码如下: echo `echo {a..z}``echo {A..Z}` /tmp/letterfile while read -p please input a letter: letter do ((`awk -v var=$letter 'BEGIN{print length(var)}'` == 1)) grep -q $letter /tmp/tmpfile break done rm -f /tmp/letterfile echo you input letter $letter [root@station1 ~]# cat a.sh 复制代码 代码如下: echo `echo {a..z}``echo {A..Z}` /tmp/letterfile while read -p please input a letter: letter do ((`awk -v var=$letter 'BEGIN{print length(var)}'` == 1)) grep -q $letter /tmp/tmpfile break done rm -f /tmp/letterfile echo you input letter $letter [root@station1 ~]# chmod +x a.sh [root@station1 ~]# ./a.sh please input a letter: 123 please input a letter: abc please input a letter: 4 please input a letter: please input a letter: ( please input a letter: a you input letter a [root@station1 ~]# 最初使用expr length $letter 替代 wk -v var=$letter 'BEGIN{print length(var)}'的。

如下: [root@station1 ~]# cat data 复制代码 代码如下: while read -p please input a letter: letter do ((`expr length $letter` == 1)) expr $letter : [[:alnum:]] /dev/null break done echo you input letter $letter [root@station1 ~]# bash data please input a letter: 123 please input a letter: abc please input a letter: a you input letter a [root@station1 ~]# bash data please input a letter: * expr: 语法错误 data: line 3: ((: == 1: syntax error: operand expected (error token is == 1) please input a letter: 来看方法二: 复制代码 代码如下: while read -p please input a letter: letter do [[ `echo $letter | awk '/^[[:alpha:]]$/{print 1}'` -eq 1 ]] break done echo you input letter $letter 如下: [root@station1 ~]# cat b.sh 复制代码 代码如下: while read -p please input a letter: letter do [[ `echo $letter | awk '/^[[:alpha:]]$/{print 1}'` -eq 1 ]] break done echo you input letter $letter [root@station1 ~]# chmod +x b.sh [root@station1 ~]# ./b.sh please input a letter: * please input a letter: abc please input a letter: 234 please input a letter: ) please input a letter: T you input letter T [root@station1 ~]# ,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/shell/11894.shtml

相关文章

风云图片

推荐阅读

返回Shell频道首页